#include <bibliotecas.h>
#include <cadastro.h>
#include <historico.h>
#include <import.h>

#ifndef __PRINCIPAL_H__
#define __PRINCIPAL_H__ 1

/** Classe Template COLUNASR 
 ela reimplementa a classe Gtk::TreeModel::ColumnRecord e é utilizada para 
 TreeView e EntryCompletion.
 */
class COLUNASR : public Gtk::TreeModel::ColumnRecord
	{
	public : 
		/**Construtor da Classe*/
		COLUNASR ();
		/**Destrutor da Classe*/
		~COLUNASR ();
		Gtk::TreeModelColumn<int> codigo;/**<Armazena o código de funcionário*/
		Gtk::TreeModelColumn<Glib::ustring> campo[7];/**<Armazena campo ustring para apresentação em TreeView*/

	private:
		int n_campos;/**<Campo contador de armazenamento para apresentação*/		
	};

class PRINCIPAL
	{
	public:
		/** Construtor*/
		PRINCIPAL();
		/** Destrutor */
		~PRINCIPAL();
		Gtk::Window *Principal, *Usuario;
		
	protected:		
		Gtk::Statusbar BarraStatus1;/**<Gtk::Statusbar barra de status do sistema.*/
		guint statusbar1;/**<Atributo controlador da PRINCIPAL::BarraStatus1.*/		
		Gtk::MenuBar *menu_barra;/**<*/
		Gtk::Menu *menu;/**<*/
		Gtk::MenuItem *submenu_barra;/**<*/
		Gtk::MenuItem *sub_menu;/**<*/
		Gtk::HBox Box_Image;/**<*/
		Gtk::Image *Logo;/**<*/
		Gtk::Menu MenuArquivo;/**<*/
		Gtk::Menu MenuCadastro;/**<*/
		Gtk::Menu MenuHistorico;/**<*/
		Gtk::Menu MenuRelatorio;/**<*/
		Gtk::Menu MenuArquivoConf;/**<*/
		Gtk::Menu MenuArquivoImp;/**<*/
		Gtk::Menu MenuImpApiario;/**<*/
		bool controle_historico;/**<*/
		bool controle[7];/**<*/
		Gtk::ScrolledWindow SW;
		Gtk::TreeView *Dados; /**<Gtk::TreeView utilizada para listar Resumo.*/

		Gtk::Entry *Nome;
			
	private:
		string usuario;
		BANCOPG *conexao;/**<*/
		Gtk::VBox Box_Principal;/**<*/
		Gtk::VBox Box_Conteudo;/**<*/
		Gtk::VBox Box_Selecao;/**<*/
		Gtk::VBox Box_Gerar;/**<*/
		Gtk::HBox Box_Menu;/**<*/
		/** */
		void Janela_Principal();
		/** */
		void sair(Gtk::Window *);
		/** */
		void testar_conexao();
		/** */
		void editar_conexao(bool );
		/** */
		void alterar_conexao();
		/** */
		void info();
		/** */
		void aviso(int );
		/** */
		void cadastro(int );
		/** */
		void historico();
		/** */
		void importar(int );	
		/** */
		void checar(int);

		/**Método utilizado para atualizar a PRINCIPAL::BarraStatus1.*/
		bool run();

		bool teste_api;/**<*/
		bool testecol;/**<*/
		bool testeplan;/**<*/
		bool testereg;/**<*/
		bool testesig;/**<*/
		bool testeabrainha;/**<*/

		char *data_hoje;/**<Atributo que guarda a data de hoje.*/			
		Glib::RefPtr<Gdk::Pixbuf> ponteiro_icon;/**<*/
		ofstream conf_escreve;/**<*/
		Gtk::Window editar;/**<*/
		Gtk::Fixed tabela_fixa;/**<*/
		Gtk::Button botao_alterar;/**<*/
		Gtk::Button botao_selecionar;/**<*/
		Gtk::HButtonBox caixa_botao;/**<*/
		Gtk::VBox Box_Conexao;/**<*/
		Gtk::Label labHost;/**<*/
		Gtk::Label labBanco;/**<*/
		Gtk::Label labUser;/**<*/
		Gtk::Label labSenha;/**<*/
		Gtk::Label labSGBD;/**<*/
		Gtk::Entry entHost;/**<*/
		Gtk::Entry entBanco;/**<*/
		Gtk::Entry entUser;/**<*/
		Gtk::Entry entSenha;/**<*/
		Gtk::Entry entSGBD;/**<*/
		CADASTRO *cad;

		COLUNASR arvore; /**<Estrutura de armazenamento*/
		Glib::RefPtr<Gtk::ListStore> arvore_ref; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Gtk::TreeModel::Row celula; /**<Gtk::TreeModel::Row utilizado na inclusão de dados em TreeView.*/

		void resumo();

		void maiusculo (Gtk::Entry *);
		
  };

#endif /*__PRINCIPAL_H___*/
